package com.own.component.store.core.confirm.model;

import com.own.component.store.core.confirm.aop.ConfirmAop;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * ConfirmModel
 *
 * @author chenxueli
 * @date 2022-06-15 03:14:15
 */
@Getter
@Setter
@ToString
@Accessors(chain = true)
@NoArgsConstructor
public class ConfirmModel implements Serializable {

    /**
     * 错误码
     */
    private String code;

    /**
     * 是否需要二次确认
     */
    private boolean value;

    /**
     * 模块名称
     */
    private String module;

    /**
     * 确认的key值
     */
    private String key;

    /**
     * 是否需要二次确认的提示文字
     */
    private String message;

    /**
     * 超时时间
     */
    private long expire;

    /**
     * 是否允许强制执行
     */
    private boolean enforce;

    /**
     * 强制执行的value值
     */
    private String enforceValue;

    /**
     * 是否跳过aop的确认（只在切面中生效）
     */
    private boolean aop;

    public ConfirmModel(ConfirmAop confirmAop) {
        this.code = confirmAop.code();
        this.value = confirmAop.value();
        this.module = confirmAop.module();
        this.key = confirmAop.key();
        this.message = confirmAop.message();
        this.expire = confirmAop.expire();
        this.enforce = confirmAop.enforce();
        this.enforceValue = confirmAop.enforceValue();
    }

}
